<?php

class MyTestController extends CustomController
{
    public function filterLocal()
    {
        // Aplicacao de um filtro local ao controller, apenas ao metodo
        // index devido ao + "positivo". Se - "negativo" o filtro e aplicado
        // a todos os actions menos ao que for escrito. Sem sinalizacao, todos
        // os actions passam pelo filtro.
        return array(
            array(
                'MyTestFilter + index'
                , 'variavel' => 'passando um valor para filtro'
/*                , 'variavel'=>Yii::app()->request->getParam('variavel',NULL), */ /* Recebendo por post um valor */
            )
        );
    }

    // Metodo que e executado sempre que o controler for invocado, e apos
    // a execucao dos filtros.
    public function beforeAction()
    {
        /* qualquer tipo de acao aqui */
        return true;    // false para o processamento
    }

    // Metodo que e executado sempre que o controler terminar sua execucao
    public function afterAction()
    {
        /* qualquer tipo de acao aqui */
        return true;    // false para o processamento
    }

    // Aqui e onde ocorre a acao do controller, sempre deve comecar com o nome
    // "action", se for invocado via url
    public function actionIndex()
    {
        // Renderiza uma visao, note que o yii ira procurar por um arquivo de visao
        // contido numa pasta que possui o mesmo nome do controller
        $this->render("interface");
    }

    // Aqui funciona da mesma forma, porem usamos um layout diferente
    public function actionIndexSemLayout()
    {
        $myArray = array('variavel'=>$this->umMetodoQualquer());
        // Modifica o layout padrao, para o simples, onde so queremos inclusao de cabecalhos
        $this->layout = 'simples';
        // Renderiza uma visao passando dados
        $this->render("interface", $myArray);
    }

    // Um metodo que poderia ser privado tambem, e nao sera acessivel pela url
    public function umMetodoQualquer()
    {
        return 'Um valor de teste';
    }
}
